<!doctype html>
<html lang="en">
  <head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="shortcut icon" type="image/x-icon" href="/assets/images/favicon.png">
  <link rel="canonical" href="/blog/vowpalwabbit-8.9.0.html" />
  <link rel="stylesheet" href="/assets/bootstrap-4.1.3-dist/css/bootstrap.min.css">
  <link rel="stylesheet" href="/assets/syntax.css">
  <link rel="stylesheet" href="/assets/main.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
  <link href="https://fonts.googleapis.com/css?family=Work+Sans:300,400,600&display=swap" rel="stylesheet">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"
    integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4"
    crossorigin="anonymous"></script>
  <script src="/assets/app.js"></script>
  <script type="text/javascript" src="https://js.monitor.azure.com/scripts/c/ms.analytics-web-3.min.js">
  </script>

  <title></title>
  <meta name="description" content="">
  <script>
    const analytics = new oneDS.ApplicationInsights();
    var config = {
      instrumentationKey: "734e91f5b0594dd08e2e4768fb4f9655-a7347ca4-1142-4c1e-831a-372cd2790ac0-6806",
      disableCookiesUsage: true,
      webAnalyticsConfiguration: {
        urlCollectHash: true
      }
    };
    analytics.initialize(config, []);
  </script>
</head>

  <body class="blog">
    


<div class="navbar_container  main_nav_container">
  <div class="container navbar">
    <div class="logo">
      <a href="/index.html">
        <?xml version="1.0" encoding="UTF-8"?>
<svg width="172px" height="30px" viewBox="0 0 172 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
    <title>logo_vw_horiz_gray</title>
    <desc>Created with Sketch.</desc>
    <g id="Styles" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="Desktop-Copy" transform="translate(-944.000000, -314.000000)">
            <g id="logo_vw_horiz_gray" transform="translate(941.000000, 314.000000)">
                <rect id="framework" x="0" y="0" width="175" height="30"></rect>
                <path d="M49.488,22 L46.59,22 L42.252,10.12 L44.88,10.12 L47.382,17.68 L48.066,20.02 L48.732,17.698 L51.252,10.12 L53.808,10.12 L49.488,22 Z M58.524,12.82 C59.9760073,12.82 61.106996,13.2339959 61.917,14.062 C62.7270041,14.8900041 63.132,16.0359927 63.132,17.5 C63.132,18.9640073 62.7270041,20.1099959 61.917,20.938 C61.106996,21.7660041 59.9760073,22.18 58.524,22.18 C57.0719927,22.18 55.9410041,21.7660041 55.131,20.938 C54.320996,20.1099959 53.916,18.9640073 53.916,17.5 C53.916,16.0359927 54.320996,14.8900041 55.131,14.062 C55.9410041,13.2339959 57.0719927,12.82 58.524,12.82 Z M58.524,14.656 C57.8279965,14.656 57.2970018,14.8929976 56.931,15.367 C56.5649982,15.8410024 56.382,16.5519953 56.382,17.5 C56.382,18.4480047 56.5649982,19.1589976 56.931,19.633 C57.2970018,20.1070024 57.8279965,20.344 58.524,20.344 C59.2200035,20.344 59.7509982,20.1070024 60.117,19.633 C60.4830018,19.1589976 60.666,18.4480047 60.666,17.5 C60.666,16.5519953 60.4830018,15.8410024 60.117,15.367 C59.7509982,14.8929976 59.2200035,14.656 58.524,14.656 Z M79.368,13 L76.506,22 L73.644,22 L71.682,15.646 L69.792,22 L66.948,22 L64.086,13 L66.696,13 L68.496,20.02 L70.512,13 L72.942,13 L74.958,20.02 L76.758,13 L79.368,13 Z M86.316,12.82 C87.516006,12.82 88.4579966,13.2309959 89.142,14.053 C89.8260034,14.8750041 90.168,16.0179927 90.168,17.482 C90.168,18.9580074 89.8260034,20.1099959 89.142,20.938 C88.4579966,21.7660041 87.516006,22.18 86.316,22.18 C85.6679968,22.18 85.1040024,22.0330015 84.624,21.739 C84.1439976,21.4449985 83.7660014,21.0400026 83.49,20.524 L83.49,25.78 L81.024,25.78 L81.024,13 L83.202,13 L83.292,14.782 C83.5560013,14.181997 83.9489974,13.7050018 84.471,13.351 C84.9930026,12.9969982 85.6079965,12.82 86.316,12.82 Z M85.578,20.29 C86.2500034,20.29 86.7719981,20.0500024 87.144,19.57 C87.5160019,19.0899976 87.702,18.4000045 87.702,17.5 C87.702,16.5999955 87.5160019,15.9100024 87.144,15.43 C86.7719981,14.9499976 86.2500034,14.71 85.578,14.71 C84.977997,14.71 84.4920019,14.9169979 84.12,15.331 C83.7479981,15.7450021 83.5380002,16.3359962 83.49,17.104 L83.49,17.896 C83.5380002,18.6520038 83.7479981,19.2399979 84.12,19.66 C84.4920019,20.0800021 84.977997,20.29 85.578,20.29 Z M100.518,20.506 C100.770001,20.506 100.973999,20.4820002 101.13,20.434 L100.95,21.928 C100.613998,22.0960008 100.224002,22.18 99.78,22.18 C98.6279942,22.18 97.9380011,21.7300045 97.71,20.83 C97.4459987,21.2740022 97.0380028,21.6099989 96.486,21.838 C95.9339972,22.0660011 95.2800038,22.18 94.524,22.18 C93.6479956,22.18 92.9640025,21.982002 92.472,21.586 C91.9799975,21.189998 91.734,20.6200037 91.734,19.876 C91.734,18.4119927 92.9039883,17.4640022 95.244,17.032 L97.404,16.618 L97.404,16.186 C97.404,15.7059976 97.2690014,15.3250014 96.999,15.043 C96.7289987,14.7609986 96.3540024,14.62 95.874,14.62 C95.3219972,14.62 94.8720017,14.7399988 94.524,14.98 C94.1759983,15.2200012 93.9360007,15.6099973 93.804,16.15 L91.842,15.322 C92.034001,14.5419961 92.4659966,13.9300022 93.138,13.486 C93.8100034,13.0419978 94.6859946,12.82 95.766,12.82 C97.0500064,12.82 98.0519964,13.0989972 98.772,13.657 C99.4920036,14.2150028 99.852,15.0399945 99.852,16.132 L99.852,19.822 C99.852,20.0620012 99.9059995,20.2359995 100.014,20.344 C100.122001,20.4520005 100.289999,20.506 100.518,20.506 Z M95.298,20.506 C95.8260026,20.506 96.3089978,20.3770013 96.747,20.119 C97.1850022,19.8609987 97.404,19.5100022 97.404,19.066 L97.404,18.13 L95.478,18.562 C95.069998,18.6580005 94.767001,18.7869992 94.569,18.949 C94.370999,19.1110008 94.272,19.3359986 94.272,19.624 C94.272,19.9120014 94.3619991,20.1309992 94.542,20.281 C94.7220009,20.4310007 94.9739984,20.506 95.298,20.506 Z M105.054,19.138 C105.054,19.5700022 105.116999,19.8699992 105.243,20.038 C105.369001,20.2060008 105.599998,20.29 105.936,20.29 C106.140001,20.29 106.316999,20.2750001 106.467,20.245 C106.617001,20.2149998 106.793999,20.1640004 106.998,20.092 L106.782,21.802 C106.589999,21.9220006 106.338002,22.0149997 106.026,22.081 C105.713998,22.1470003 105.408002,22.18 105.108,22.18 C104.231996,22.18 103.593002,21.9670021 103.191,21.541 C102.788998,21.1149979 102.588,20.4340047 102.588,19.498 L102.588,9.058 L105.054,9.058 L105.054,19.138 Z M118.482,22 L115.62,22 L112.164,10.12 L114.846,10.12 L117.15,20.038 L119.526,10.12 L121.902,10.12 L124.314,20.038 L126.618,10.12 L129.174,10.12 L125.718,22 L122.928,22 L121.272,15.52 L120.714,12.712 L120.678,12.712 L120.12,15.52 L118.482,22 Z M138.336,20.506 C138.588001,20.506 138.791999,20.4820002 138.948,20.434 L138.768,21.928 C138.431998,22.0960008 138.042002,22.18 137.598,22.18 C136.445994,22.18 135.756001,21.7300045 135.528,20.83 C135.263999,21.2740022 134.856003,21.6099989 134.304,21.838 C133.751997,22.0660011 133.098004,22.18 132.342,22.18 C131.465996,22.18 130.782002,21.982002 130.29,21.586 C129.797998,21.189998 129.552,20.6200037 129.552,19.876 C129.552,18.4119927 130.721988,17.4640022 133.062,17.032 L135.222,16.618 L135.222,16.186 C135.222,15.7059976 135.087001,15.3250014 134.817,15.043 C134.546999,14.7609986 134.172002,14.62 133.692,14.62 C133.139997,14.62 132.690002,14.7399988 132.342,14.98 C131.993998,15.2200012 131.754001,15.6099973 131.622,16.15 L129.66,15.322 C129.852001,14.5419961 130.283997,13.9300022 130.956,13.486 C131.628003,13.0419978 132.503995,12.82 133.584,12.82 C134.868006,12.82 135.869996,13.0989972 136.59,13.657 C137.310004,14.2150028 137.67,15.0399945 137.67,16.132 L137.67,19.822 C137.67,20.0620012 137.723999,20.2359995 137.832,20.344 C137.940001,20.4520005 138.107999,20.506 138.336,20.506 Z M133.116,20.506 C133.644003,20.506 134.126998,20.3770013 134.565,20.119 C135.003002,19.8609987 135.222,19.5100022 135.222,19.066 L135.222,18.13 L133.296,18.562 C132.887998,18.6580005 132.585001,18.7869992 132.387,18.949 C132.188999,19.1110008 132.09,19.3359986 132.09,19.624 C132.09,19.9120014 132.179999,20.1309992 132.36,20.281 C132.540001,20.4310007 132.791998,20.506 133.116,20.506 Z M145.734,12.82 C146.934006,12.82 147.875997,13.2339959 148.56,14.062 C149.244003,14.8900041 149.586,16.0419926 149.586,17.518 C149.586,18.9820073 149.244003,20.1249959 148.56,20.947 C147.875997,21.7690041 146.934006,22.18 145.734,22.18 C145.025996,22.18 144.411003,22.0030018 143.889,21.649 C143.366997,21.2949982 142.974001,20.818003 142.71,20.218 L142.62,22 L140.442,22 L140.442,9.058 L142.908,9.058 L142.908,14.476 C143.184001,13.9599974 143.561998,13.5550015 144.042,13.261 C144.522002,12.9669985 145.085997,12.82 145.734,12.82 Z M144.996,20.29 C145.668003,20.29 146.189998,20.0500024 146.562,19.57 C146.934002,19.0899976 147.12,18.4000045 147.12,17.5 C147.12,16.5999955 146.934002,15.9100024 146.562,15.43 C146.189998,14.9499976 145.668003,14.71 144.996,14.71 C144.395997,14.71 143.910002,14.9199979 143.538,15.34 C143.165998,15.7600021 142.956,16.3479962 142.908,17.104 L142.908,17.896 C142.956,18.6640038 143.165998,19.2549979 143.538,19.669 C143.910002,20.0830021 144.395997,20.29 144.996,20.29 Z M157.056,12.82 C158.256006,12.82 159.197997,13.2339959 159.882,14.062 C160.566003,14.8900041 160.908,16.0419926 160.908,17.518 C160.908,18.9820073 160.566003,20.1249959 159.882,20.947 C159.197997,21.7690041 158.256006,22.18 157.056,22.18 C156.347996,22.18 155.733003,22.0030018 155.211,21.649 C154.688997,21.2949982 154.296001,20.818003 154.032,20.218 L153.942,22 L151.764,22 L151.764,9.058 L154.23,9.058 L154.23,14.476 C154.506001,13.9599974 154.883998,13.5550015 155.364,13.261 C155.844002,12.9669985 156.407997,12.82 157.056,12.82 Z M156.318,20.29 C156.990003,20.29 157.511998,20.0500024 157.884,19.57 C158.256002,19.0899976 158.442,18.4000045 158.442,17.5 C158.442,16.5999955 158.256002,15.9100024 157.884,15.43 C157.511998,14.9499976 156.990003,14.71 156.318,14.71 C155.717997,14.71 155.232002,14.9199979 154.86,15.34 C154.487998,15.7600021 154.278,16.3479962 154.23,17.104 L154.23,17.896 C154.278,18.6640038 154.487998,19.2549979 154.86,19.669 C155.232002,20.0830021 155.717997,20.29 156.318,20.29 Z M164.328,11.704 C163.307995,11.704 162.798,11.2660044 162.798,10.39 C162.798,9.50199556 163.307995,9.058 164.328,9.058 C165.348005,9.058 165.858,9.50199556 165.858,10.39 C165.858,11.2660044 165.348005,11.704 164.328,11.704 Z M165.552,22 L163.086,22 L163.086,13 L165.552,13 L165.552,22 Z M174.336,21.442 C174.047999,21.6700011 173.685002,21.8499993 173.247,21.982 C172.808998,22.1140007 172.350002,22.18 171.87,22.18 C169.86599,22.18 168.864,21.2740091 168.864,19.462 L168.864,14.836 L167.226,14.836 L167.226,13 L168.864,13 L168.864,10.93 L171.33,10.246 L171.33,13 L174.246,13 L174.246,14.836 L171.33,14.836 L171.33,19.066 C171.33,19.8940041 171.743996,20.308 172.572,20.308 C173.100003,20.308 173.561998,20.1400017 173.958,19.804 L174.336,21.442 Z" id="VowpalWabbit" fill="#333333" fill-rule="nonzero"></path>
                <g id="logo_vw_color" transform="translate(3.000000, 0.000000)" fill="#2A3B93">
                    <path d="M27.9875518,16.6117194 C27.9875518,9.21947752 21.9666728,9.36035971 21.9666728,9.36035971 C21.3736977,6.15536974 20.3362508,3.5963294 19.3414955,1.96947553 C18.1790857,0.436543115 17.3241355,0 17.3241355,0 C16.2887633,0.700737156 15.7766231,3.93943024 15.7766231,3.93943024 C14.1726939,1.18184505 12.329851,1.05294263 12.329851,1.05294263 C9.93824094,8.37466357 17.0427696,11.1203489 17.0427696,11.1203489 C9.97542657,11.1203489 6.33307087,15.0400524 4.59284756,17.9877167 C4.0042614,19.0524794 3.60319929,20.0302689 3.35048069,20.7371557 L2.99801525,21.8605394 C1.89952322,21.2108361 0.011355398,21.1878349 0.011355398,21.1878349 C-0.278708419,29.2136474 5.0845596,28.0167877 5.0845596,28.0167877 C5.0845596,29.1432063 6.56177043,30 6.56177043,30 L18.0978518,30 C18.0978518,30 17.9248509,28.5478912 16.7183131,27.7616983 C16.5196972,27.4693917 16.4533057,27.212705 16.6897456,26.9422016 C17.354698,26.1816454 17.8296525,27.1798804 17.8296525,27.1798804 L18.3302221,27.8553801 C19.7539686,29.627988 20.7440159,29.9516816 21.1646284,30 L21.391732,30 C20.5763614,27.5009384 20.6054875,25.3190215 20.6054875,25.3190215 C20.4822802,22.1365535 22.8107704,19.2166024 22.8107704,19.2166024 C28.5084697,19.2166024 27.9875518,16.6117194 27.9875518,16.6117194" id="logo_rabbit"></path>
                </g>
            </g>
        </g>
    </g>
</svg>
      </a>
    </div>

    <div class="nav">
      <a
        href="/start.html"
        class=''
      >
        Get started
      </a>
      <a
        href="/features.html"
        class=''
      >
        Features
      </a>
      <a
        href="/tutorials.html"
        class=''
      >
        Tutorials
      </a>
      <a
        href="/blog.html"
        class='active'
      >
        Blog
      </a>
      <a
        href="/research.html"
        class=''
      >
        Research
      </a>
      <div class="external_links">
        <a href="https://vowpalwabbit.org/docs/vowpal_wabbit/python/latest/index.html">
          Docs
        </a>

        <a
          href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki"
          target="_blank"
        >
          Wiki
        </a>

        <a
          href="https://github.com/VowpalWabbit/vowpal_wabbit"
          target="_blank"
          class="github_link"
        >
          <?xml version="1.0" encoding="UTF-8"?>
<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 53 (72520) - https://sketchapp.com -->
    <title>GitHub</title>
    <desc>Created with Sketch.</desc>
    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="HD_Desktop_header_Home" transform="translate(-1538.000000, -58.000000)" fill="#FFFFFF">
            <g id="Header">
                <path d="M1568,73.7951128 C1567.94603,74.2583723 1567.89891,74.7224863 1567.83682,75.1847206 C1567.56271,77.2238487 1566.86543,79.1138828 1565.7732,80.8526868 C1564.55268,82.7956941 1562.9969,84.4188114 1561.05088,85.6538569 C1560.03339,86.2996179 1558.94817,86.8066231 1557.80753,87.1895684 C1557.17559,87.4016322 1556.73848,87.0743943 1556.73531,86.4093237 C1556.72907,85.1020808 1556.73745,83.7947524 1556.73164,82.487424 C1556.72804,81.6908602 1556.64825,80.9063436 1556.21259,80.2087201 C1556.0855,80.0052003 1555.92463,79.8226135 1555.77393,79.6234512 C1556.35935,79.5140871 1556.9463,79.4362506 1557.51632,79.2916849 C1559.04696,78.9034423 1560.41543,78.2275208 1561.34791,76.8924242 C1562.03287,75.9115647 1562.34632,74.7851144 1562.48436,73.6108172 C1562.59169,72.6982249 1562.62222,71.7826422 1562.42971,70.8740656 C1562.23608,69.9599354 1561.84044,69.1418405 1561.22834,68.4359293 C1561.07756,68.2620575 1561.04763,68.1215929 1561.12221,67.896713 C1561.52468,66.6818314 1561.3562,65.491984 1560.9042,64.3262309 C1560.87829,64.2595017 1560.76574,64.1973008 1560.68569,64.1853391 C1560.15364,64.1058793 1559.65196,64.2559986 1559.18533,64.4761793 C1558.42904,64.8332361 1557.69764,65.242668 1556.9487,65.6159585 C1556.82229,65.6790137 1556.64782,65.7219904 1556.51706,65.6889249 C1554.16941,65.0964789 1551.82595,65.097077 1549.47805,65.6883268 C1549.34078,65.7228448 1549.14638,65.677134 1549.02331,65.5987849 C1548.07109,64.9919849 1547.06446,64.5120644 1545.97001,64.2236166 C1545.9511,64.218661 1545.93272,64.2115694 1545.91364,64.2077246 C1545.22551,64.0670892 1545.09971,64.1456947 1544.9036,64.8108506 C1544.58682,65.884755 1544.5296,66.9550708 1544.90668,68.0296587 C1544.93627,68.1139033 1544.90129,68.2616303 1544.8404,68.3306664 C1543.60397,69.7341156 1543.31096,71.3989279 1543.46559,73.1936101 C1543.55933,74.2817831 1543.81162,75.3262104 1544.29869,76.3083514 C1544.97176,77.6654063 1546.11181,78.4952066 1547.4926,78.982475 C1548.35956,79.2884382 1549.27852,79.4473579 1550.18824,79.6758264 C1550.19526,79.6319098 1550.20056,79.6666842 1550.18568,79.6820635 C1549.71726,80.1697591 1549.45556,80.755028 1549.34531,81.4170227 C1549.33137,81.5007546 1549.27365,81.6203716 1549.20685,81.6454912 C1548.16482,82.0372369 1547.11706,82.2433199 1546.08683,81.6149888 C1545.61867,81.3295314 1545.27683,80.9169382 1545.00101,80.4479541 C1544.56852,79.712395 1543.95864,79.179074 1543.13923,78.9361661 C1542.84434,78.8487602 1542.50823,78.8709748 1542.19359,78.8892591 C1541.97909,78.9018189 1541.90862,79.062362 1542.05256,79.2422147 C1542.18529,79.4077988 1542.32025,79.5950849 1542.4978,79.6971865 C1543.28625,80.1507913 1543.72798,80.8753286 1544.08881,81.6641173 C1544.30382,82.1341266 1544.48812,82.6140471 1544.88675,82.9753759 C1545.52169,83.5510755 1546.29115,83.7682658 1547.11612,83.8044072 C1547.81434,83.834995 1548.51496,83.8107298 1549.24722,83.8107298 C1549.24611,83.8009041 1549.26073,83.8742123 1549.26167,83.9476058 C1549.27211,84.7377616 1549.2828,85.5279173 1549.28844,86.3180731 C1549.294,87.0913115 1548.82935,87.4109452 1548.0952,87.1563319 C1544.28705,85.8355039 1541.4928,83.3342269 1539.62819,79.7992882 C1538.22405,77.1372118 1537.78027,74.2780237 1538.09739,71.2935795 C1538.4294,68.1688416 1539.66702,65.4337134 1541.73193,63.0872551 C1543.89022,60.6347648 1546.57714,59.0045559 1549.78825,58.3523869 C1554.45335,57.4048494 1558.71409,58.3562318 1562.44442,61.3515269 C1565.27245,63.6222848 1567.02271,66.5767393 1567.72914,70.1361141 C1567.83314,70.6605492 1567.87265,71.197715 1567.94398,71.7286436 C1567.95792,71.832625 1567.9811,71.9354102 1568,72.0387934 L1568,73.7951128 Z" id="GitHub"></path>
            </g>
        </g>
    </g>
</svg>
          <div>
            GitHub
          </div>
        </a>
      </div>
    </div>
  </div>
</div>




<div class="navbar_container  mobile_nav_container">
  <div class="container navbar">
    <div class="hamburger_icon">
      <?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="16px" viewBox="0 0 18 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: sketchtool 57.1 (101010) - https://sketch.com -->
    <title>8049A6A1-2687-43E9-9B5D-E205E8F9E871</title>
    <desc>Created with sketchtool.</desc>
    <g id="Pages" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
        <g id="Mobile_home" transform="translate(-12.000000, -56.000000)" stroke="#FFFFFF" stroke-width="2">
            <g id="header">
                <g id="ui_header_mobile_dk" transform="translate(12.000000, 44.000000)">
                    <g id="icon_menu" transform="translate(1.000000, 12.500000)">
                        <g id="Line">
                            <path d="M16,0.5 L0,0.5"></path>
                            <path d="M16,7.5 L0,7.5"></path>
                            <path d="M16,14.5 L0,14.5"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>
    </div>
    <div class="logo">
      <a href="/index.html">
        <?xml version="1.0" encoding="UTF-8"?>
<svg width="172px" height="30px" viewBox="0 0 172 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
    <title>logo_vw_horiz_gray</title>
    <desc>Created with Sketch.</desc>
    <g id="Styles" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="Desktop-Copy" transform="translate(-944.000000, -314.000000)">
            <g id="logo_vw_horiz_gray" transform="translate(941.000000, 314.000000)">
                <rect id="framework" x="0" y="0" width="175" height="30"></rect>
                <path d="M49.488,22 L46.59,22 L42.252,10.12 L44.88,10.12 L47.382,17.68 L48.066,20.02 L48.732,17.698 L51.252,10.12 L53.808,10.12 L49.488,22 Z M58.524,12.82 C59.9760073,12.82 61.106996,13.2339959 61.917,14.062 C62.7270041,14.8900041 63.132,16.0359927 63.132,17.5 C63.132,18.9640073 62.7270041,20.1099959 61.917,20.938 C61.106996,21.7660041 59.9760073,22.18 58.524,22.18 C57.0719927,22.18 55.9410041,21.7660041 55.131,20.938 C54.320996,20.1099959 53.916,18.9640073 53.916,17.5 C53.916,16.0359927 54.320996,14.8900041 55.131,14.062 C55.9410041,13.2339959 57.0719927,12.82 58.524,12.82 Z M58.524,14.656 C57.8279965,14.656 57.2970018,14.8929976 56.931,15.367 C56.5649982,15.8410024 56.382,16.5519953 56.382,17.5 C56.382,18.4480047 56.5649982,19.1589976 56.931,19.633 C57.2970018,20.1070024 57.8279965,20.344 58.524,20.344 C59.2200035,20.344 59.7509982,20.1070024 60.117,19.633 C60.4830018,19.1589976 60.666,18.4480047 60.666,17.5 C60.666,16.5519953 60.4830018,15.8410024 60.117,15.367 C59.7509982,14.8929976 59.2200035,14.656 58.524,14.656 Z M79.368,13 L76.506,22 L73.644,22 L71.682,15.646 L69.792,22 L66.948,22 L64.086,13 L66.696,13 L68.496,20.02 L70.512,13 L72.942,13 L74.958,20.02 L76.758,13 L79.368,13 Z M86.316,12.82 C87.516006,12.82 88.4579966,13.2309959 89.142,14.053 C89.8260034,14.8750041 90.168,16.0179927 90.168,17.482 C90.168,18.9580074 89.8260034,20.1099959 89.142,20.938 C88.4579966,21.7660041 87.516006,22.18 86.316,22.18 C85.6679968,22.18 85.1040024,22.0330015 84.624,21.739 C84.1439976,21.4449985 83.7660014,21.0400026 83.49,20.524 L83.49,25.78 L81.024,25.78 L81.024,13 L83.202,13 L83.292,14.782 C83.5560013,14.181997 83.9489974,13.7050018 84.471,13.351 C84.9930026,12.9969982 85.6079965,12.82 86.316,12.82 Z M85.578,20.29 C86.2500034,20.29 86.7719981,20.0500024 87.144,19.57 C87.5160019,19.0899976 87.702,18.4000045 87.702,17.5 C87.702,16.5999955 87.5160019,15.9100024 87.144,15.43 C86.7719981,14.9499976 86.2500034,14.71 85.578,14.71 C84.977997,14.71 84.4920019,14.9169979 84.12,15.331 C83.7479981,15.7450021 83.5380002,16.3359962 83.49,17.104 L83.49,17.896 C83.5380002,18.6520038 83.7479981,19.2399979 84.12,19.66 C84.4920019,20.0800021 84.977997,20.29 85.578,20.29 Z M100.518,20.506 C100.770001,20.506 100.973999,20.4820002 101.13,20.434 L100.95,21.928 C100.613998,22.0960008 100.224002,22.18 99.78,22.18 C98.6279942,22.18 97.9380011,21.7300045 97.71,20.83 C97.4459987,21.2740022 97.0380028,21.6099989 96.486,21.838 C95.9339972,22.0660011 95.2800038,22.18 94.524,22.18 C93.6479956,22.18 92.9640025,21.982002 92.472,21.586 C91.9799975,21.189998 91.734,20.6200037 91.734,19.876 C91.734,18.4119927 92.9039883,17.4640022 95.244,17.032 L97.404,16.618 L97.404,16.186 C97.404,15.7059976 97.2690014,15.3250014 96.999,15.043 C96.7289987,14.7609986 96.3540024,14.62 95.874,14.62 C95.3219972,14.62 94.8720017,14.7399988 94.524,14.98 C94.1759983,15.2200012 93.9360007,15.6099973 93.804,16.15 L91.842,15.322 C92.034001,14.5419961 92.4659966,13.9300022 93.138,13.486 C93.8100034,13.0419978 94.6859946,12.82 95.766,12.82 C97.0500064,12.82 98.0519964,13.0989972 98.772,13.657 C99.4920036,14.2150028 99.852,15.0399945 99.852,16.132 L99.852,19.822 C99.852,20.0620012 99.9059995,20.2359995 100.014,20.344 C100.122001,20.4520005 100.289999,20.506 100.518,20.506 Z M95.298,20.506 C95.8260026,20.506 96.3089978,20.3770013 96.747,20.119 C97.1850022,19.8609987 97.404,19.5100022 97.404,19.066 L97.404,18.13 L95.478,18.562 C95.069998,18.6580005 94.767001,18.7869992 94.569,18.949 C94.370999,19.1110008 94.272,19.3359986 94.272,19.624 C94.272,19.9120014 94.3619991,20.1309992 94.542,20.281 C94.7220009,20.4310007 94.9739984,20.506 95.298,20.506 Z M105.054,19.138 C105.054,19.5700022 105.116999,19.8699992 105.243,20.038 C105.369001,20.2060008 105.599998,20.29 105.936,20.29 C106.140001,20.29 106.316999,20.2750001 106.467,20.245 C106.617001,20.2149998 106.793999,20.1640004 106.998,20.092 L106.782,21.802 C106.589999,21.9220006 106.338002,22.0149997 106.026,22.081 C105.713998,22.1470003 105.408002,22.18 105.108,22.18 C104.231996,22.18 103.593002,21.9670021 103.191,21.541 C102.788998,21.1149979 102.588,20.4340047 102.588,19.498 L102.588,9.058 L105.054,9.058 L105.054,19.138 Z M118.482,22 L115.62,22 L112.164,10.12 L114.846,10.12 L117.15,20.038 L119.526,10.12 L121.902,10.12 L124.314,20.038 L126.618,10.12 L129.174,10.12 L125.718,22 L122.928,22 L121.272,15.52 L120.714,12.712 L120.678,12.712 L120.12,15.52 L118.482,22 Z M138.336,20.506 C138.588001,20.506 138.791999,20.4820002 138.948,20.434 L138.768,21.928 C138.431998,22.0960008 138.042002,22.18 137.598,22.18 C136.445994,22.18 135.756001,21.7300045 135.528,20.83 C135.263999,21.2740022 134.856003,21.6099989 134.304,21.838 C133.751997,22.0660011 133.098004,22.18 132.342,22.18 C131.465996,22.18 130.782002,21.982002 130.29,21.586 C129.797998,21.189998 129.552,20.6200037 129.552,19.876 C129.552,18.4119927 130.721988,17.4640022 133.062,17.032 L135.222,16.618 L135.222,16.186 C135.222,15.7059976 135.087001,15.3250014 134.817,15.043 C134.546999,14.7609986 134.172002,14.62 133.692,14.62 C133.139997,14.62 132.690002,14.7399988 132.342,14.98 C131.993998,15.2200012 131.754001,15.6099973 131.622,16.15 L129.66,15.322 C129.852001,14.5419961 130.283997,13.9300022 130.956,13.486 C131.628003,13.0419978 132.503995,12.82 133.584,12.82 C134.868006,12.82 135.869996,13.0989972 136.59,13.657 C137.310004,14.2150028 137.67,15.0399945 137.67,16.132 L137.67,19.822 C137.67,20.0620012 137.723999,20.2359995 137.832,20.344 C137.940001,20.4520005 138.107999,20.506 138.336,20.506 Z M133.116,20.506 C133.644003,20.506 134.126998,20.3770013 134.565,20.119 C135.003002,19.8609987 135.222,19.5100022 135.222,19.066 L135.222,18.13 L133.296,18.562 C132.887998,18.6580005 132.585001,18.7869992 132.387,18.949 C132.188999,19.1110008 132.09,19.3359986 132.09,19.624 C132.09,19.9120014 132.179999,20.1309992 132.36,20.281 C132.540001,20.4310007 132.791998,20.506 133.116,20.506 Z M145.734,12.82 C146.934006,12.82 147.875997,13.2339959 148.56,14.062 C149.244003,14.8900041 149.586,16.0419926 149.586,17.518 C149.586,18.9820073 149.244003,20.1249959 148.56,20.947 C147.875997,21.7690041 146.934006,22.18 145.734,22.18 C145.025996,22.18 144.411003,22.0030018 143.889,21.649 C143.366997,21.2949982 142.974001,20.818003 142.71,20.218 L142.62,22 L140.442,22 L140.442,9.058 L142.908,9.058 L142.908,14.476 C143.184001,13.9599974 143.561998,13.5550015 144.042,13.261 C144.522002,12.9669985 145.085997,12.82 145.734,12.82 Z M144.996,20.29 C145.668003,20.29 146.189998,20.0500024 146.562,19.57 C146.934002,19.0899976 147.12,18.4000045 147.12,17.5 C147.12,16.5999955 146.934002,15.9100024 146.562,15.43 C146.189998,14.9499976 145.668003,14.71 144.996,14.71 C144.395997,14.71 143.910002,14.9199979 143.538,15.34 C143.165998,15.7600021 142.956,16.3479962 142.908,17.104 L142.908,17.896 C142.956,18.6640038 143.165998,19.2549979 143.538,19.669 C143.910002,20.0830021 144.395997,20.29 144.996,20.29 Z M157.056,12.82 C158.256006,12.82 159.197997,13.2339959 159.882,14.062 C160.566003,14.8900041 160.908,16.0419926 160.908,17.518 C160.908,18.9820073 160.566003,20.1249959 159.882,20.947 C159.197997,21.7690041 158.256006,22.18 157.056,22.18 C156.347996,22.18 155.733003,22.0030018 155.211,21.649 C154.688997,21.2949982 154.296001,20.818003 154.032,20.218 L153.942,22 L151.764,22 L151.764,9.058 L154.23,9.058 L154.23,14.476 C154.506001,13.9599974 154.883998,13.5550015 155.364,13.261 C155.844002,12.9669985 156.407997,12.82 157.056,12.82 Z M156.318,20.29 C156.990003,20.29 157.511998,20.0500024 157.884,19.57 C158.256002,19.0899976 158.442,18.4000045 158.442,17.5 C158.442,16.5999955 158.256002,15.9100024 157.884,15.43 C157.511998,14.9499976 156.990003,14.71 156.318,14.71 C155.717997,14.71 155.232002,14.9199979 154.86,15.34 C154.487998,15.7600021 154.278,16.3479962 154.23,17.104 L154.23,17.896 C154.278,18.6640038 154.487998,19.2549979 154.86,19.669 C155.232002,20.0830021 155.717997,20.29 156.318,20.29 Z M164.328,11.704 C163.307995,11.704 162.798,11.2660044 162.798,10.39 C162.798,9.50199556 163.307995,9.058 164.328,9.058 C165.348005,9.058 165.858,9.50199556 165.858,10.39 C165.858,11.2660044 165.348005,11.704 164.328,11.704 Z M165.552,22 L163.086,22 L163.086,13 L165.552,13 L165.552,22 Z M174.336,21.442 C174.047999,21.6700011 173.685002,21.8499993 173.247,21.982 C172.808998,22.1140007 172.350002,22.18 171.87,22.18 C169.86599,22.18 168.864,21.2740091 168.864,19.462 L168.864,14.836 L167.226,14.836 L167.226,13 L168.864,13 L168.864,10.93 L171.33,10.246 L171.33,13 L174.246,13 L174.246,14.836 L171.33,14.836 L171.33,19.066 C171.33,19.8940041 171.743996,20.308 172.572,20.308 C173.100003,20.308 173.561998,20.1400017 173.958,19.804 L174.336,21.442 Z" id="VowpalWabbit" fill="#333333" fill-rule="nonzero"></path>
                <g id="logo_vw_color" transform="translate(3.000000, 0.000000)" fill="#2A3B93">
                    <path d="M27.9875518,16.6117194 C27.9875518,9.21947752 21.9666728,9.36035971 21.9666728,9.36035971 C21.3736977,6.15536974 20.3362508,3.5963294 19.3414955,1.96947553 C18.1790857,0.436543115 17.3241355,0 17.3241355,0 C16.2887633,0.700737156 15.7766231,3.93943024 15.7766231,3.93943024 C14.1726939,1.18184505 12.329851,1.05294263 12.329851,1.05294263 C9.93824094,8.37466357 17.0427696,11.1203489 17.0427696,11.1203489 C9.97542657,11.1203489 6.33307087,15.0400524 4.59284756,17.9877167 C4.0042614,19.0524794 3.60319929,20.0302689 3.35048069,20.7371557 L2.99801525,21.8605394 C1.89952322,21.2108361 0.011355398,21.1878349 0.011355398,21.1878349 C-0.278708419,29.2136474 5.0845596,28.0167877 5.0845596,28.0167877 C5.0845596,29.1432063 6.56177043,30 6.56177043,30 L18.0978518,30 C18.0978518,30 17.9248509,28.5478912 16.7183131,27.7616983 C16.5196972,27.4693917 16.4533057,27.212705 16.6897456,26.9422016 C17.354698,26.1816454 17.8296525,27.1798804 17.8296525,27.1798804 L18.3302221,27.8553801 C19.7539686,29.627988 20.7440159,29.9516816 21.1646284,30 L21.391732,30 C20.5763614,27.5009384 20.6054875,25.3190215 20.6054875,25.3190215 C20.4822802,22.1365535 22.8107704,19.2166024 22.8107704,19.2166024 C28.5084697,19.2166024 27.9875518,16.6117194 27.9875518,16.6117194" id="logo_rabbit"></path>
                </g>
            </g>
        </g>
    </g>
</svg>
      </a>
    </div>
  </div>
</div>

<div class="mobile_nav">
  <button type="button" class="go_back_button">
    <
  </button>

  <a href="/start.html" class=''>
    Get started
  </a>
  <a
    href="/features.html"
    class=''
  >
    Features
  </a>
  <a href="/tutorials.html" class=''>
    Tutorials
  </a>
  <a
    href="/blog.html"
    class='active'
  >
    Blog
  </a>
  <a href="/research.html" class=''>
    Research
  </a>
  <div class="external_links">
    <a
      href="https://github.com/VowpalWabbit/vowpalwabbit.github.io/issues/new"
      target="_blank"
    >
      Feedback
    </a>

    <a href="https://vowpalwabbit.org/docs/vowpal_wabbit/python/latest/index.html">
      Docs
    </a>

    <a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki" target="_blank">
      Wiki
    </a>

    <a href="https://github.com/VowpalWabbit/vowpal_wabbit" target="_blank" class="github_link">
      <?xml version="1.0" encoding="UTF-8"?>
<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 53 (72520) - https://sketchapp.com -->
    <title>GitHub</title>
    <desc>Created with Sketch.</desc>
    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="HD_Desktop_header_Home" transform="translate(-1538.000000, -58.000000)" fill="#FFFFFF">
            <g id="Header">
                <path d="M1568,73.7951128 C1567.94603,74.2583723 1567.89891,74.7224863 1567.83682,75.1847206 C1567.56271,77.2238487 1566.86543,79.1138828 1565.7732,80.8526868 C1564.55268,82.7956941 1562.9969,84.4188114 1561.05088,85.6538569 C1560.03339,86.2996179 1558.94817,86.8066231 1557.80753,87.1895684 C1557.17559,87.4016322 1556.73848,87.0743943 1556.73531,86.4093237 C1556.72907,85.1020808 1556.73745,83.7947524 1556.73164,82.487424 C1556.72804,81.6908602 1556.64825,80.9063436 1556.21259,80.2087201 C1556.0855,80.0052003 1555.92463,79.8226135 1555.77393,79.6234512 C1556.35935,79.5140871 1556.9463,79.4362506 1557.51632,79.2916849 C1559.04696,78.9034423 1560.41543,78.2275208 1561.34791,76.8924242 C1562.03287,75.9115647 1562.34632,74.7851144 1562.48436,73.6108172 C1562.59169,72.6982249 1562.62222,71.7826422 1562.42971,70.8740656 C1562.23608,69.9599354 1561.84044,69.1418405 1561.22834,68.4359293 C1561.07756,68.2620575 1561.04763,68.1215929 1561.12221,67.896713 C1561.52468,66.6818314 1561.3562,65.491984 1560.9042,64.3262309 C1560.87829,64.2595017 1560.76574,64.1973008 1560.68569,64.1853391 C1560.15364,64.1058793 1559.65196,64.2559986 1559.18533,64.4761793 C1558.42904,64.8332361 1557.69764,65.242668 1556.9487,65.6159585 C1556.82229,65.6790137 1556.64782,65.7219904 1556.51706,65.6889249 C1554.16941,65.0964789 1551.82595,65.097077 1549.47805,65.6883268 C1549.34078,65.7228448 1549.14638,65.677134 1549.02331,65.5987849 C1548.07109,64.9919849 1547.06446,64.5120644 1545.97001,64.2236166 C1545.9511,64.218661 1545.93272,64.2115694 1545.91364,64.2077246 C1545.22551,64.0670892 1545.09971,64.1456947 1544.9036,64.8108506 C1544.58682,65.884755 1544.5296,66.9550708 1544.90668,68.0296587 C1544.93627,68.1139033 1544.90129,68.2616303 1544.8404,68.3306664 C1543.60397,69.7341156 1543.31096,71.3989279 1543.46559,73.1936101 C1543.55933,74.2817831 1543.81162,75.3262104 1544.29869,76.3083514 C1544.97176,77.6654063 1546.11181,78.4952066 1547.4926,78.982475 C1548.35956,79.2884382 1549.27852,79.4473579 1550.18824,79.6758264 C1550.19526,79.6319098 1550.20056,79.6666842 1550.18568,79.6820635 C1549.71726,80.1697591 1549.45556,80.755028 1549.34531,81.4170227 C1549.33137,81.5007546 1549.27365,81.6203716 1549.20685,81.6454912 C1548.16482,82.0372369 1547.11706,82.2433199 1546.08683,81.6149888 C1545.61867,81.3295314 1545.27683,80.9169382 1545.00101,80.4479541 C1544.56852,79.712395 1543.95864,79.179074 1543.13923,78.9361661 C1542.84434,78.8487602 1542.50823,78.8709748 1542.19359,78.8892591 C1541.97909,78.9018189 1541.90862,79.062362 1542.05256,79.2422147 C1542.18529,79.4077988 1542.32025,79.5950849 1542.4978,79.6971865 C1543.28625,80.1507913 1543.72798,80.8753286 1544.08881,81.6641173 C1544.30382,82.1341266 1544.48812,82.6140471 1544.88675,82.9753759 C1545.52169,83.5510755 1546.29115,83.7682658 1547.11612,83.8044072 C1547.81434,83.834995 1548.51496,83.8107298 1549.24722,83.8107298 C1549.24611,83.8009041 1549.26073,83.8742123 1549.26167,83.9476058 C1549.27211,84.7377616 1549.2828,85.5279173 1549.28844,86.3180731 C1549.294,87.0913115 1548.82935,87.4109452 1548.0952,87.1563319 C1544.28705,85.8355039 1541.4928,83.3342269 1539.62819,79.7992882 C1538.22405,77.1372118 1537.78027,74.2780237 1538.09739,71.2935795 C1538.4294,68.1688416 1539.66702,65.4337134 1541.73193,63.0872551 C1543.89022,60.6347648 1546.57714,59.0045559 1549.78825,58.3523869 C1554.45335,57.4048494 1558.71409,58.3562318 1562.44442,61.3515269 C1565.27245,63.6222848 1567.02271,66.5767393 1567.72914,70.1361141 C1567.83314,70.6605492 1567.87265,71.197715 1567.94398,71.7286436 C1567.95792,71.832625 1567.9811,71.9354102 1568,72.0387934 L1568,73.7951128 Z" id="GitHub"></path>
            </g>
        </g>
    </g>
</svg>
      <div>
        GitHub
      </div>
    </a>
  </div>
</div>

<script src="/assets/js/header.js"></script>


    <div class="hero">
      <div class="container">
        <div class="row">
          <div class="col-lg-6">
            <h1>
              Blog
            </h1>
            <a href="/blog.html">
              < Back to blog
            </a>
          </div>
        </div>
      </div>
    </div>

    <div class="container content blog_container">
      <div class="row">
        <div class="col-lg-9">
          <div class="blog_date">
            November 12, 2020
          </div>
          <div class="blog_title">
            <h1>
              VowpalWabbit 8.9.0 Release Notes
            </h1>
          </div>
          <div class="author">
            
              <img
                class="author_avatar"
                alt="author's avatar"
                src="https://avatars1.githubusercontent.com/u/7558482?s=400&u=21e4cca683799d65a20a4cf3d11d0c17853ef9cb&v=4"
              />
            
            <div>
              Jack Gerrits
            </div>
          </div>
          <div class="blog_highlight">
  <ul>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/releases/tag/8.9.0">GitHub release</a></li>
    <li><a href="https://pypi.org/project/vowpalwabbit/">PyPi</a></li>
  </ul>
</div>

<p>It’s been a while since we last released, but a lot of exciting things have been going on!</p>

<p>Let’s take a look at some of the big items from this release.</p>

<h2 id="python-wheels">Python Wheels</h2>

<p>We now produce Python wheels for <a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Python#support">most platforms</a> which are uploaded to PyPi. This means you almost never have to build from source to use VW in Python! We’re committed to making using VW in Python a great experience, and this is just the first step.</p>

<h2 id="string-feature-values-in-text-format">String feature values in text format</h2>
<p>In a small expansion of the text format you can now supply a string as the value for a feature. This strictly adds a case which is now valid and doesn’t affect any existing valid data files. If this was tried previously you’d receive a malformed example warning and the feature would be skipped. When a feature value is supplied in this way the hash is now calculated as <code class="highlighter-rouge">hash(feature_value, hash(feature_name, namespace_hash))</code> where hash’s signature is <code class="highlighter-rouge">hash(input, seed)</code>. This chained hashing is denoted by a <code class="highlighter-rouge">^</code> in the audit output.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"| myname:myvalue"</span> | vw <span class="nt">--audit</span>
</code></pre></div></div>

<p><strong>Output:</strong></p>
<div class="output">

  <p>Num weight bits = 18
learning rate = 0.5
initial_t = 0
power_t = 0.5
using no cache
Reading datafile =
num sources = 1
Enabled reductions: gd, scorer
average  since         example        example  current  current  current
loss     last          counter         weight    label  predict features
0
	myname^myvalue:112555:1:0@0	Constant:116060:1:0@0
    n.a.     n.a.            1            1.0  unknown   0.0000        2</p>

  <p>finished run
number of examples = 1
weighted example sum = 1.000000
weighted label sum = 0.000000
average loss = n.a.
total feature number = 2</p>

</div>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Input-format">Input format wiki</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Audit">Audit wiki</a></li>
</ul>

<h2 id="continuous-actions">Continuous Actions</h2>
<p>CATS is a contextual bandit algorithm with a continuous action space. It uses epsilon greedy exploration with tree policy classes and smoothing.</p>

<p>CATS, utilizing the features given as input, will first choose a center from a continuous action range using a tree policy, and then will use a bandwidth to determine a radius of randomization around the chosen center (centers or discrete actions). The depth of the tree and the bandwidth need to be specified beforehand.</p>

<p>Thanks to Maryam Majzoubi (<a href="https://github.com/mmajzoubi">@mmajzoubi</a>) for this contribution.</p>

<ul>
  <li><a href="https://arxiv.org/pdf/2006.06040.pdf">Read the paper</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/CATS,-CATS-pdf-for-Continuous-Actions">Learn more at the wiki page</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2493">Pull request</a></li>
</ul>

<h2 id="square-cb">Square CB</h2>
<p>Square CB is a new exploration algorithm for contextual bandits which works by reducing contextual bandits to regression. It is the first reduction of this type that provably has optimal performance for contextual bandits, and has comparable runtime to other basic exploration algorithms such as epsilon-greedy. Empirically, it has been shown that it has competitive performance on the large-scale evaluation setup from the <a href="https://arxiv.org/abs/1802.04064">bake-off paper</a>.</p>

<p>Thanks to Dylan Foster (<a href="https://github.com/canondetortugas">@canondetortugas</a>) for this contribution.</p>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Contextual-Bandit-Exploration-with-SquareCB">Learn more at the wiki page</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2536">Pull request</a></li>
</ul>

<h2 id="probabilistic-label-tree">Probabilistic Label Tree</h2>
<p>Probabilistic label tree is a new reduction for logarithmic time multilabel classification. It is especially useful when there is a large number of classes, around 10000 or more.</p>

<p>Thanks to Marek Wydmuch (<a href="https://github.com/mwydmuch">@mwydmuch</a>) for this contribution.</p>

<ul>
  <li><a href="https://proceedings.mlr.press/v48/jasinska16.html">Read the paper</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/tree/master/demo/plt">See a demo of it</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2440">Pull request</a></li>
</ul>

<h2 id="slates">Slates</h2>
<p>Slates is a multi slot algorithm which builds upon the ideas of <a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Conditional-Contextual-Bandit">Conditional Contextual Bandit</a>. It adds the following constraints:</p>

<ol>
  <li>There is a single global reward</li>
  <li>Slots have disjoint action sets</li>
</ol>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Slates">Learn more at the wiki page</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2347">Pull request</a></li>
</ul>

<h2 id="contextual-bandit-distributionally-robust-optimization">Contextual Bandit Distributionally Robust Optimization</h2>
<p>This reduction adds support for distributionally robust optimization for contextual bandits in VW.</p>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Contextual-Bandit-Distributionally-Robust-Optimization-(cb_dro)">Learn more at the wiki page</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2203">Pull request</a></li>
</ul>

<h2 id="cb-explore-adf-rnd">CB Explore ADF RND</h2>
<p>This adds a new exploration algorithm for CB ADF inspired by random network distillation.</p>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Contextual-Bandit-algorithms#changing-action-set-or-featurized-actions">Learn more at the wiki page (point 5.)</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2407">Pull request</a></li>
</ul>

<h2 id="initial-pandas-support-in-python">Initial Pandas support in Python</h2>

<p>We introduced in this release <code class="highlighter-rouge">DFtoVW</code>, a class that converts <code class="highlighter-rouge">pandas.DataFrame</code> object into VW input format. To use import it from <code class="highlighter-rouge">vowpalwabbit.DFtoVW</code>. We currently support simple label, multiclass label and feature transformations.</p>

<p>Example:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">vowpalwabbit.DFtoVW</span> <span class="kn">import</span> <span class="n">DFtoVW</span><span class="p">,</span> <span class="n">SimpleLabel</span><span class="p">,</span> <span class="n">Feature</span><span class="p">,</span> <span class="n">Namespace</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="n">pd</span>

<span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s">"y"</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s">"a"</span><span class="p">:</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="s">"b"</span><span class="p">:</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">]})</span>
<span class="n">conv1</span> <span class="o">=</span> <span class="n">DFtoVW</span><span class="p">(</span><span class="n">df</span><span class="o">=</span><span class="n">df</span><span class="p">,</span>
    <span class="n">label</span><span class="o">=</span><span class="n">SimpleLabel</span><span class="p">(</span><span class="s">"y"</span><span class="p">),</span>
    <span class="n">features</span><span class="o">=</span><span class="p">[</span><span class="n">Feature</span><span class="p">(</span><span class="s">"a"</span><span class="p">),</span> <span class="n">Feature</span><span class="p">(</span><span class="s">"b"</span><span class="p">)])</span>
<span class="n">conv1</span><span class="p">.</span><span class="n">convert_df</span><span class="p">()</span>
<span class="c1"># ['1 | a:2 b:3', '-1 | a:3 b:2']
</span>
<span class="n">conv2</span> <span class="o">=</span> <span class="n">DFtoVW</span><span class="p">(</span><span class="n">df</span><span class="o">=</span><span class="n">df</span><span class="p">,</span>
    <span class="n">label</span><span class="o">=</span><span class="n">SimpleLabel</span><span class="p">(</span><span class="s">"y"</span><span class="p">),</span>
    <span class="n">namespaces</span><span class="o">=</span><span class="p">[</span><span class="n">Namespace</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"ns1"</span><span class="p">,</span> <span class="n">features</span><span class="o">=</span><span class="n">Feature</span><span class="p">(</span><span class="s">"a"</span><span class="p">))])</span>
<span class="n">conv2</span><span class="p">.</span><span class="n">convert_df</span><span class="p">()</span>
<span class="c1"># ['1 |ns1 a:2', '-1 |ns1 a:3']
</span></code></pre></div></div>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Input-format">Input format wiki</a></li>
  <li><a href="https://vowpalwabbit.org/docs/vowpal_wabbit/python/latest/tutorials/DFtoVW_tutorial.html">Documentation</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/blob/master/python/tests/test_DFtoVW.py">More examples</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/blob/80917701fb0353f8f862cab3a0f8425bab37396c/python/vowpalwabbit/DFtoVW.py#L517">Code</a></li>
</ul>

<p>Thanks to Etienne Kintzler (<a href="https://github.com/etiennekintzler">@etiennekintzler</a>) for this contribution.</p>

<h2 id="new-options">New options</h2>
<h3 id="--chain_hash"><code class="highlighter-rouge">--chain_hash</code></h3>
<p>In the JSON and DSJSON formats when a string was supplied as a value the old behavior was to concatenate the property name with the value. This option changes the behavior to hash the feature name a long with the value to determine the feature index. The old behavior is deprecated and you’ll receive a warning if <code class="highlighter-rouge">--chain_hash</code> is not supplied and you are using either <code class="highlighter-rouge">--json</code> or <code class="highlighter-rouge">--dsjson</code>. The old behavior will be removed in a future version.</p>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2214">Pull request</a></li>
</ul>

<h3 id="--local"><code class="highlighter-rouge">--local</code></h3>
<p>When a model is saved in active learning mode, it resumes active learning when loaded (i.e., it starts listening for input on a port and ignoring local sources).
This option allows the user to change this behaviour (so that the Python library can interact with the loaded model, for example).</p>

<p>Contributed by <a href="https://github.com/zechyw">@zechyw</a>.</p>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2411">Pull request</a></li>
</ul>

<h3 id="--dry_run"><code class="highlighter-rouge">--dry_run</code></h3>
<p>This option will skip running the driver. It is especially helpful with the new diagnostic about enabled reductions.</p>

<p><strong>Example:</strong></p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>vw <span class="nt">--ccb_explore_adf</span> <span class="nt">--dry_run</span>
</code></pre></div></div>

<p><strong>Output:</strong></p>
<div class="output">

  <p>Num weight bits = 18
learning rate = 0.5
initial_t = 0
power_t = 0.5
using no cache
Reading datafile =
num sources = 1
Enabled reductions: gd, scorer, csoaa_ldf, cb_adf, cb_explore_adf_greedy, cb_sample, shared_feature_merger, ccb_explore_adf</p>

  <p>finished run
number of examples = 0
weighted example sum = 0.000000
weighted label sum = 0.000000
average loss = n.a.
total feature number = 0</p>

</div>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2531">Pull request</a></li>
</ul>

<h3 id="--nounif"><code class="highlighter-rouge">--nounif</code></h3>
<p>This option was added to cb_explore with cover so that it can behave the same way as cb_explore_adf_cover which provides a switch for turning off the uniform exploration on zero-probability actions. Uniform exploration on zero-probability actions is now on by default in cb cover to match the existing behavior of cb_explore_adf_cover.</p>

<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2633">Pull request</a></li>
</ul>

<h2 id="other-improvements">Other improvements</h2>
<ul>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2381">Automatic documentation generation on each commit.</a> Published here: https://vowpalwabbit.org/docs</li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2316">Valgrind checking on every pull request</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2538">Formatting checks on PR diffs</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2246">Invert hash now includes all weights even if they do not have an audit string</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2269">Use TCP_NODELAY for daemon sockets to avoid Nagle introducing long delay</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2490">Use a power of 10 lookup table to improve VW text parser perf for exp lookups</a></li>
  <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2412">Refactor IO abstractions into generic writers and readers</a></li>
</ul>

<h2 id="thank-you">Thank you</h2>

<p>A huge thank you and welcome to all of the new contributors since the last release:</p>

<ul>
  <li><a href="https://github.com/adityauser">@adityauser</a></li>
  <li><a href="https://github.com/canondetortugas">@canondetortugas</a></li>
  <li><a href="https://github.com/etiennekintzler">@etiennekintzler</a></li>
  <li><a href="https://github.com/mmajzoubi">@mmajzoubi</a></li>
  <li><a href="https://github.com/mritunjaysharma394">@mritunjaysharma394</a></li>
  <li><a href="https://github.com/mwydmuch">@mwydmuch</a></li>
  <li><a href="https://github.com/olgavrou">@olgavrou</a></li>
  <li><a href="https://github.com/RituRajSingh878">@RituRajSingh878</a></li>
  <li><a href="https://github.com/SchuylerGoodman">@SchuylerGoodman</a></li>
  <li><a href="https://github.com/Sharad24">@Sharad24</a></li>
  <li><a href="https://github.com/Smit-create">@Smit-create</a></li>
  <li><a href="https://github.com/thealphadollar">@thealphadollar</a></li>
  <li><a href="https://github.com/timgates42">@timgates42</a></li>
  <li><a href="https://github.com/zechyw">@zechyw</a></li>
  <li><a href="https://github.com/zwd-ms">@zwd-ms</a></li>
</ul>

<p>And of course thank you to existing contributors:</p>
<ul>
  <li><a href="https://github.com/arielf">@arielf</a></li>
  <li><a href="https://github.com/ataymano">@ataymano</a></li>
  <li><a href="https://github.com/cheng-tan">@cheng-tan</a></li>
  <li><a href="https://github.com/gramhagen">@gramhagen</a></li>
  <li><a href="https://github.com/jackgerrits">@jackgerrits</a></li>
  <li><a href="https://github.com/kumpera">@kumpera</a></li>
  <li><a href="https://github.com/lalo">@lalo</a></li>
  <li><a href="https://github.com/lokitoth">@lokitoth</a></li>
  <li><a href="https://github.com/peterychang">@peterychang</a></li>
  <li><a href="https://github.com/pmineiro">@pmineiro</a></li>
  <li><a href="https://github.com/rajan-chari">@rajan-chari</a></li>
</ul>

<h2 id="full-changelist">Full changelist</h2>

<div>
  <i class="fa fa-caret-right"></i>
  <button class="changelist_button">
    There were plenty more changes! Click here to expand and see the full changelist.
  </button>
</div>

<div class="changelist hidden">

  <ul>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2633">cover to mimic cover adf (#2633)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2610">Enable automatic CB and CCB equivalence for single slot examples (#2610)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2636">fixed duplicate quadratic interactions (#2636)</a> - Rajan</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2631">bug fix: action index is inconsistent in explore_eval (#2631)</a> - cheng-tan</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2637">benchmark against master (#2637)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2625">Experimental benchmarking pipeline (#2625)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2623">cats pdf edge cases (#2623)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2634">Make chain hash the default with text format and warn with json formats (#2634)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2632">Update DFtoVW examples to reflect the move to a different file (#2632)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2630">[py] add docs for DFtoVW (#2630)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2627">Add python to clang format script (#2627)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2626">Run clang-format over codebase (#2626)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2628">Update ubuntu version for formatting CI (#2628)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2622">Rename p, lp, simple_label (#2622)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2508">Contributing guidelines (#2508)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2619">Fix msbuild warnings C4005, C4242 (#2619)</a> - Schuyler Goodman</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2617">[py] add test based on example (#2617)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2616">Change loss function to a unique_ptr (#2616)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2615">[log_multi] remove extra arg (#2615)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2595">Create test for programmatic access to Search SequenceSpanTask in DotNet (#2595)</a> - Jacob Alber</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2531">–dry_run &amp; elevate "option gates" into a native feature of options (#2531)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2604">remove throw (#2604)</a> - John</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2611">Add exit scope for predictions (#2611)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2612">Make the duplicate interactions warning respect –quiet (#2612)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2609">[py] Default feature name based on pandas colname, default VW separator based on type (#2609)</a> - Etienne Kintzler</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/unknown">[py] move DFtoVW to its own file</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2601">Remove the possibility in DFtoVW to provide constant values (#2601)</a> - Etienne Kintzler</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2602">Ensure CCB labels are restored if an exception is throw. Add temporary logging so we can validate the fix. (#2602)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2603">Ensure CCB labels are restored if an exception is throw. Add temporary logging so we can validate the fix. (#2603)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2597">cats to respect –quiet (#2597)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2547">Add multilabels class for DFtoVW (#2547)</a> - Etienne Kintzler</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2592">Support using "_p" in DSJSON parser. (#2592)</a> - zwd-ms</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2594">Update PACKAGE.rst (#2594)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2593">Create CI for producing Windows Python wheels (#2593)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2590">Continuous actions dsjson (#2590)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2591">Run Python wheel CI for PRs (#2591)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2564">Revert "[Build] Make vw_io an object library  (#2564)" (#2588)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2586">Only depend on vw_c_api_unit_test when BUILD_EXPERIMENTAL_BINDING is on (#2586)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2585">Build+Test Python wheels for MacOS in CI (#2585)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2583">Require exact Python version to be found (#2583)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2584">Update setup.py (#2584)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2580">Remove boost thread dep (#2580)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2581">Remove Boost::system dependency (#2581)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2582">Update build_python_wheels.yml (#2582)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2579">Update Python build script to allow for wheel generation (#2579)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2493">Continuous actions (#2493)</a> - Maryam Majzoubi</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2575">Use correct type in static assert (#2575)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2574">Use strings for warning names (#2574)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2569">Use target based property, remove duplicated link (#2569)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2565">Implement reader and writer to be used with raw c api (#2565)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2570">Add options stubs (#2570)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2563">[CAPI] Add stubs for VW workspace (#2563)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2571">Fail on warnings (#2571)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2572">Fix include path to use header out of binary dir (#2572)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2568">Initial step for finding static lib deps on Windows (#2568)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2564">[Build] Make vw_io an object library  (#2564)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2535">Define cpack variables and include CPack (#2535)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2562">VWSlim fixes (#2562)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2561">[CAPI] Add C bindings to valgrind CI (#2561)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2553">[CAPI] Add exports and types headers (#2553)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2560">Use AfterHash for IndentPPDirectives (#2560)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2557">[CAPI] Put experimental bindings behind experimental cmake flag (#2557)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2554">Revert "Add preprocessor indent format option (#2554)" (#2559)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2554">Add preprocessor indent format option (#2554)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2552">Ensure c bindings test runs as part of test_with_output (#2552)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2551">[CAPI] Implement buildsystem for C bindings (#2551)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2525">"First slot"/"all slots" loss report for ccb (#2525)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2549">Resolve more MSVC warnings (#2549)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2548">Handle boost exception being raised from add_and_parse (#2548)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2544">Fix C4296 and C2065 (#2544)</a> - Schuyler Goodman</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2536">Add SquareCB contextual bandit algorithm (#2536)</a> - Dylan Foster</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2540">Enable unit test run with valgrind (#2540)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2542">- Provide guidance about how to fix (#2542)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2538">Overhaul formatting CI (#2538)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2541">Add devcontainer configuration (#2541)</a> - Jacob Alber</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2534">Make valgrind build fail on error (#2534)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2537">Migrate error codes implementation from #2493 and move into experimental namespace (#2537)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2530">Fix python tests on Windows (#2530)</a> - peterychang</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2532">Extract ngram creation and transformation to a separate class (#2532)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2522">Fix incorrect type casting in weight default initialization (#2522)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2523">Extract namedlabels class (#2523)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2526">Disable flaky test (#2526)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2515">Resolving various MSVC warnings (#2515)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2520">Clear prediction in the slates reduction (#2520)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2519">Use collection comparison instead of iterating over the collection and comparing (#2519)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2517">Add test for spoof_hex_encoded_namespaces (#2517)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2510">Set reader consistently (#2510)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2511">resolve MSVC C4456 and C4459 (#2511)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2514">Update java subversion (#2514)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2512">Update Java Spark bindings for CB support (#2512)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2507">Resolve C4244 MSVC warnings (#2507)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2502">Handle cast-function-type warning explicitly in code (#2502)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2498">Resolve second batch of v_array based memset warnings (#2498)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2501">Error if multilabel given to multiclass (#2501)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2500">add multiclass label type (#2500)</a> - Etienne Kintzler</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2503">Fix two warnings in PLT (#2503)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2440">Probabilistic Label Tree (#2440)</a> - Marek Wydmuch</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2494">Migrate away from deprecated strerror function (#2494)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2495">Improve the handling of ignoring warnings across platforms and toolch… (#2495)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2490">Proposal: Use a power of 10 lookup table to improve VW text parser perf by 10% (#2490)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2489">Fix Slates crash (#2489)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2484">Fix warnings to do with memset of non-trivial types (#2484)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/unknown">Remove autogen file</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2485">Build fixes for slim (#2485)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2487">make chain hashing equivalent between text and json format (#2487)</a> - olgavrou</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2478">Add simple test for slates to RunTests (#2478)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/unknown">Simplify DFtoVW py api</a> - Etienne Kintzler</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2482">Revert doc comment change (#2482)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2480">Make count_label thread safe locklessly (#2480)</a> - peterychang</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2481">Run apt update in workflow to ensure apt install works (#2481)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2477">Switch to std::chrono in bfgs to fix warnings (#2477)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2368">Update python slearn_vw.VW estimator to match SKLearn specs (#2368)</a> - Scott Graham</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2236">Remove vw::pairs and vw::triples. Done with #1863. (#2236)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2366">Multiple passes of cleanup to iobuf (#2366)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2470">Improve const correctness of options framework (#2470)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2473">Change language to remove reference to whitelist (#2473)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2395">Use black in python (#2395)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2468">fix memcpy overflow (#2468)</a> - peterychang</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2299">added quantile loss (#2299)</a> - Aditya Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2434">Cleanup feature_group (#2434)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2466">Fix clang-tidy issues in CCB and Slates (#2466)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2465">Create .clang-tidy file  (#2465)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2464">Turn on CMAKE_EXPORT_COMPILE_COMMANDS in CMakeLists.txt (#2464)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2463">Simplify clang-format and small fixes and changes (#2463)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2457">Drain the queue if it is non empty due to possible early termination exits (#2457)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2461">Fix build break for older versions of ZLib (#2461)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2460">Revert API break (#2460)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2454">Ataymano/ccb exploration fix (#2454)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2453">Fix directory for requirements install (#2453)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2448">Add pandas to requirements, fix documentation generation (#2448)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2426">Pandas to vw text format (#2426)</a> - Etienne Kintzler</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2435">Fix some warnings, improve example lifecycle management (#2435)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2437">Remove headers no longer needed in io_buf (#2437)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2439">Fix warnings in unit test project (#2439)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2442">Fix CB state corruption when GD THROWs (#2442)</a> - Jacob Alber</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2441">Add examples to swap_guard and scope_exit (#2441)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2438">Fix label name in bug_report (#2438)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2412">IO abstraction refactor - writers and readers (#2412)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2431">Implement two new RAII utilities and migrate nn (#2431)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2432">Add debug option to setup python script (#2432)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2418">Change fetching of positional args to be in the options interface (#2418)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2430">Fix text parser in Python (#2430)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2429">Widen diff output as as the small width was causing failures on some machines (#2429)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2425">[Slates] Fix metadata extraction (#2425)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2424">[Slates] Fix float retrieval (#2424)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2422">Ataymano/ccb reproducibility fix (#2422)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2420">Add missing hook into slates parser for json (#2420)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2421">Fix Slates slot assignment (#2421)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2407">Cb explore adf rnd (#2407)</a> - Paul Mineiro</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2415">Update config.yml (#2415)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2417">Update build-linux-valgrind.yml (#2417)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2296"> Change Interactions from signed char to uint8_t to avoid casting (#2296)</a> - Sharad Chitlangia</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2411">Added –local option (for loading active learning/damon models) (#2411)</a> - Zechy Wong</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2402">Create tool to help measure throughput of parser (#2402)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2404">Merge symbol export visibility handling between C++ lib and DLL and fixes to vw_exception (#2404)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2409">Fix push many (#2409)</a> - cheng-tan</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2403">Write some docs about the learner object (#2403)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2401">Fixes passing list of strings as examples in predict and learn (#2401)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2385">Migrate to CodeCov for code coverage (#2385)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2406">Add back unit test generation (#2406)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2390">[Slates] Implement DSJSON parser for slates (#2390)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2394">[Slates] Move the slates namespace to be nested under VW (#2394)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2398">Update master branch to be consistent with 8.8.1 release (#2398)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2399">Move deletion logic to destructor of vw (#2399)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2383">Delete windows_build.bat (#2383)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2384">Remove Travis and Appveyor files now that they are turned off (#2384)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2396">Fix usages of LEARNER ns (#2396)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2393">Migrate LEARNER namespace to VW::LEARNER, provide compat header (#2393)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2389">Change estimator portion of output to use clearer implementation of PI (#2389)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2388">[Slates] Expose slates label to Python (#2388)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2387">Add VW::make_unique, make scoped_calloc_or_throw exception safe, fix test usage of make_unique (#2387)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2392">Remove noisy and unnecessary source from doyxgen generated docs (#2392)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2386">Update documentation generation (#2386)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2381">Build and upload documentation for each release (#2381)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2347">Implement the core reduction for slates (#2347)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2361">Added doc template and feature request template (#2361)</a> - Ritu Raj Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2373">Fix return reference to temporary local bug (#2373)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2336">Documentation correction of pyvw.py (#2336)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2276">Added tests to increase coverage (#2276)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2379">Remove Boost::thread dependency (#2379)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2372">Fix warning where only copy assignment constructor was defined, can be replaced with defaults (#2372)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2376">Update build_docs.yml (#2376)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2377">Add basic contents to the doxygen mainpage (#2377)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2380">Reorder path in RunTests so that local build takes priority over installed VW (#2380)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2364">Prevent overwriting passes when data is passed in VW at object creation (#2364)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2375">Only override RelWithDebInfo flags for non MSVC situations (#2375)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2334">LDA / minibatch bug fix (#2334)</a> - Eduardo Salinas</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2360">Added –quiet arg (#2360)</a> - Aditya Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2367">Ignore tmp.model (#2367)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2365">Only run upload on master repository (#2365)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2350">Enable automatic building and hosting of documentation for every new commit (#2350)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2337">[FIX] Added warning for "–ring_size" with 0 as an argument (#2337)</a> - Aditya Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2356">Auto-read version in conf.py for docs from version.txt (#2356)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2307">added  repr in BaseEstimator from sklearn (#2307)</a> - Ritu Raj Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2348">added sgd param in sklearn_vw (#2348)</a> - Ritu Raj Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2332">added multiclassifier in vw_sklearn (#2332)</a> - Ritu Raj Singh</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2344">Change RelWithDebInfo to use O3 instead of O2 and set it as default (#2344)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2346">Fixes AttributeError in multiclass_probabilities_label (#2346)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2235">Unit tests dynamically link to libvw, so they can’t catch vw specific exceptions. See #2234. (#2235)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2305">Uniform docstyle in sklearn_vw.py (#2305)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2321">Implement Slates label parser (#2321)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2327">Fix clang tidy issues in CCB (#2327)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2301">[FIX] Make Python Examples Up To Date With Scikit-Learn Version 0.22.1 (#2301)</a> - Shivam Kumar Jha</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2331">Fix two typos in memory_tree.cc (#2331)</a> - Ariel Faigon</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2325">Fix the issue #2322 to throw error for invalid epsilon argument passed. (#2325)</a> - Mritunjay Kumar Sharma</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2293">Add convert_labels param in VW sklearn class (#2293)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2318">Fix most valgrind errors in unit tests (#2318)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2319">Need to decrement failure count in case of expected failure (#2319)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2316">Create CI to run Valgrind (#2316)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2315">RunTests should not fail if Valgrind failed for a script or Python file (#2315)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2304">[FIX] Remove Outputs From Example Notebooks (#2304)</a> - Shivam Kumar Jha</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2297">Fix str function in cbandit to produce correct format (#2297)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2302">[STYLE] Make Python Files Adhere To Set Linting Standards (#2302)</a> - Shivam Kumar Jha</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2288">Do not block stderr on Nan prediction + Non-logging logger (#2288)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2294">Change CMakeLists.txt to have each file on its own line (#2294)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2289">Don’t initialize multiple variables in one line in search (#2289)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2287">Remove symbols without definitions (#2287)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2286">Move destruction of search_private to its destructor (#2286)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2283">Fix race condition in daemon mode between parsing and inference threads. Fixes #2201 (#2283)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2246">Invert hash now includes all weights even if they do not have an audit string (#2246)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2269">Use TCP_NODELAY for daemon sockets to avoid Nagle introducing long de… (#2269)</a> - Rodrigo Kumpera</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2280">Fix warnings in unit_test by wrapping string constants in std::string temporary objects (#2280)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2279">Make Windows build better (#2279)</a> - Jacob Alber</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2278">Remove profile from vw_clr.vcxproj (#2278)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2277">Allow overriding –epsilon value from model file (#2277)</a> - Jacob Alber</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2214">Add chain hash option (#2214)</a> - cheng-tan</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2266">Use _WIN32 (compiler definition) instead of WIN32 (sdk definition) (#2266)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2256">Support interpreting the string NaN as a float nan in dsjson (#2256)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2248">Support finding system version of RapidJSON (#2248)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2265">Update README.md (#2265)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2261">Run Linux build in both release and debug mode (#2261)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2259">Multiline parsing in python (#2259)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2263">Fixes nameerror in Contextual_Bandit_Examples (#2263)</a> - Smit Lunagariya</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2258">Unify python README with wiki (#2258)</a> - peterychang</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2250">Fix segfault when reading from cache, using interactions and audit (#2250)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2252">Add deprecation warning for qcolon (#2252)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2251">Delete INSTALL (#2251)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2249">Silence cmake warning for policy CMP0076 (#2249)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2243">Fix some cases where fuzzy compare would not work (#2243)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2237">Remove in_use field from example (#2237)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2208">Fix most of the deprecation warnings for sklearn 0.22 (#2208)</a> - peterychang</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2233">Add support for detecting available C++ standard on all platforms  (#2233)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2239">Cb dro fix (#2239)</a> - Paul Mineiro</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2238">Remove unimplemented function (#2238)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2224">winsdk update (#2224)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2203">Distributionally robust cb (#2203)</a> - Paul Mineiro</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2117">Parser string view (#2117)</a> - peterychang</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2220">Performance fixes (#2220)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2218">Align prediction and label enum types (#2218)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2225">Update .travis.yml to fix Maven issue (#2225)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2221">Ataymano/random fixes (#2221)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2219">Add macros for silencing deprecation warnings (#2219)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2209">Create pretty printer for gdb (#2209)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2217">Reduce probability of overflow (#2217)</a> - Rajan</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2215">Fix version of NewtonSoft used by in vw_cli.vcxproj (#2215)</a> - Jacob Alber</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2213">Fix simple typo: throogh -&gt; through (#2213)</a> - Tim Gates</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2195">Cleanup Headers (#2195)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2206">Fix delete behavior for examples created using parse function (#2206)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2187">Fix deprecated function usage, add file opened check (#2187)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2204">Learning2Search notebook format fix (#2204)</a> - Alexey Taymanov</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2189">When building unit tests vw_c_wrapper DLL should be binplaced (#2189)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2190">Fix predict affecting model state when in library mode (#2190)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2186">Add vw_types.natvis to generated solution (#2186)</a> - Jack Gerrits</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2198">Update test/README (#2198)</a> - Ariel Faigon</li>
    <li><a href="https://github.com/VowpalWabbit/vowpal_wabbit/pull/2185">Standardize copyright comments (#2185)</a> - Jack Gerrits</li>
  </ul>

</div>

        </div>
        <div class="col-lg-3">
        </div>
      </div>
    </div>
    <div class="container-fluid footer_container">
  <div class="container">
    <div class="row align-items-center justify-content-between">
      <div class="col">
        Microsoft is a major contributor
      </div>
      <div class="col feedback_col">
        <a
          class="feedback_link"
          href="https://github.com/VowpalWabbit/vowpalwabbit.github.io/issues/new"
          target="_blank"
        >
          Feedback
        </a>
      </div>
    </div>
  </div>
</div>

<script src="/assets/js/citation.js"></script>

    <script src="/assets/js/blog.js"></script>
  </body>
</html>
